#pragma once

#include <iostream>
#include <string>
#include <functional>
#include "log.hpp"

class Task
{
    typedef std::function<int(int, int)> func_t;

public:
    Task() {}
    Task(int x, int y, func_t func)
        : _x(x), _y(y), _func(func)
    {
    }
    void operator()(std::string &name)
    {
        // std::cout << "线程：" << name << "处理完成，结果是："<< _x << "+" << _y << " = " << _func(_x, _y) << std::endl;

        logMessage(WARNING, "%s  处理完成：%d + %d = %d | %s | %d |",
                   name.c_str(), _x, _y, _func(_x, _y),
                   __FILE__, __LINE__);
        //__FILE__      //进行编译的源文件
        //__LINE__     //文件当前的行号
        //__DATE__    //文件被编译的日期
        //__TIME__    //文件被编译的时间
        //__STDC__    //如果编译器遵循ANSI C，其值为1，否则未定义
    }

public:
    int _x;
    int _y;
    func_t _func;
};